home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fatted Calf
/
The Fatted Calf.iso
/
Applications
/
Audio
/
Patchmix
/
XWindowsSource
/
xset.c
< prev
Wrap
C/C++ Source or Header
|
1992-03-28
|
24KB
|
839 lines
static char rcsid[] = "$Header: xset.c,v 1.6 91/02/13 09:47:36 mara Exp $";
/* xset.c
*
* Written by Mara Helmuth
*
* Description: X graphics functions in C
* called by graphics class
* for Cmix X graphical interface
*
* $Log: xset.c,v $
* Revision 1.6 91/02/13 09:47:36 mara
* panel fixes (main)
*
* Revision 1.5 90/09/08 12:51:16 mara
* side panel
*
* Revision 1.4 90/09/07 20:51:15 mara
* fm
*
* Revision 1.3 90/09/05 22:12:59 mara
* many fixes, +,-,*,/ ugens added
*
* Revision 1.2 90/09/02 18:17:15 mara
* most NeXT graphics fixes
*
* Revision 1.1 90/08/27 17:10:35 mara
* Initial revision
*
*/
/*#include <g++/stdio.h>
#include <g++/std.h>
extern "C"
{
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "/usr/local/src/lxt/lxt.h"
#include "x.h"
#include "bitmap/oscil.bitmap"
#include "bitmap/add.bitmap"
#include "bitmap/subtract.bitmap"
#include "bitmap/multiply.bitmap"
#include "bitmap/divide.bitmap"
#include "bitmap/out.bitmap"
#include "bitmap/dot.bitmap"
}
*/
#define XSET 1
#include "plus.h"
void setup_windows(int argc, char *argv[])
{
unsigned int bw;
XSizeHints xsh;
char *display;
boolean lxt_event();
progname= *argv;
display= (char *) NULL;
if ((dpy = XOpenDisplay(display)) == NULL) {
(void) fprintf(stderr, "%s: can't open display %s\n", argv[0], display);
exit(1);
}
if ((fontstruct = XLoadQueryFont(dpy, FONT)) == NULL) {
(void) fprintf(stderr, "%s: display %s doesn't know font %s\n", argv[0], DisplayString(dpy), FONT);
exit(1);
}
if ((fontstructS = XLoadQueryFont(dpy, SMALL_FONT)) == NULL) {
(void) fprintf(stderr, "%s: display %s doesn't know font %s\n", argv[0], DisplayString(dpy), SMALL_FONT);
exit(1);
}
white= WhitePixel(dpy, DefaultScreen(dpy));
black= BlackPixel(dpy, DefaultScreen(dpy));
bw= 2;
/************ Default Instrument Data **************************************/
ugen[ugen_no].type = 0;
/************ Enclosing frame window ***************************************/
xsh.flags= (PPosition | PSize);
xsh.height= WFRAME_HEIGHT;
xsh.width= WFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
wwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, wwin, "patchmix", "wwindow", None, argv, argc, &xsh);
XSetWMHints(dpy, wwin, &xwmh);
/************ Top panel window *********************************************/
xsh.height= PFRAME_HEIGHT;
xsh.width= PFRAME_WIDTH;
xsh.x= 0;
xsh.y= 0;
pwin= XCreateSimpleWindow(dpy, wwin, xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, pwin, "patchmix", "panel", None, argv, argc, &xsh);
XSetWMHints(dpy, pwin, &xwmh);
/************ Quit window **************************************************/
xsh.height= QFRAME_HEIGHT;
xsh.width= QFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
qwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, qwin, "patchmix", "qpanel", None, argv, argc, &xsh);
XSetWMHints(dpy, qwin, &xwmh);
/************ Oscil window **************************************************/
xsh.height= OFRAME_HEIGHT;
xsh.width= OFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
oscwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, oscwin, "patchmix", "oscpanel", None, argv, argc, &xsh);
XSetWMHints(dpy, oscwin, &xwmh);
/************ Evp window **************************************************/
xsh.height= EFRAME_HEIGHT;
xsh.width= EFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
evpwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, evpwin, "patchmix", "evppanel", None, argv, argc, &xsh);
XSetWMHints(dpy, evpwin, &xwmh);
/************ Buzz window **************************************************/
xsh.height= OFRAME_HEIGHT;
xsh.width= OFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
buzzwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, oscwin, "patchmix", "buzzpanel", None, argv, argc, &xsh);
XSetWMHints(dpy, buzzwin, &xwmh);
/************ Side window **************************************************/
xsh.height= SFRAME_HEIGHT;
xsh.width= SFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
sidewin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, sidewin, "patchmix", "sidepanel", None, argv, argc, &xsh);
XSetWMHints(dpy, sidewin, &xwmh);
/************ Instrument Data window *****************************************/
xsh.height= DFRAME_HEIGHT;
xsh.width= DFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
datwin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, datwin, "patchmix", "datpanel", None, argv, argc, &xsh);
XSetWMHints(dpy, datwin, &xwmh);
/*************** Canvas window *********************************************/
xsh.height= CFRAME_HEIGHT;
xsh.width= CFRAME_WIDTH;
xsh.x= 0;
xsh.y= 190;
cwin= XCreateSimpleWindow(dpy, wwin, xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, cwin, "patchmix", "canvas", None, argv, argc, &xsh);
XSetWMHints(dpy, cwin, &xwmh);
/*************** Menu window *********************************************/
/* Set properties & hints for the menu_bar window and create it */
xsh.height= MFRAME_HEIGHT;
xsh.width= MFRAME_WIDTH;
xsh.x= 0;
xsh.y= 150;
mwin= XCreateSimpleWindow(dpy, wwin, xsh.x, xsh.y, xsh.width,
xsh.height, bw, black, white );
XSetStandardProperties(dpy, mwin, "patchmix", "canvas", None, argv, argc, &xsh);
XSetWMHints(dpy, mwin, &xwmh);
/************ Text window **************************************************/
xsh.height= TFRAME_HEIGHT;
xsh.width= TFRAME_WIDTH;
xsh.x= (DisplayWidth(dpy, DefaultScreen(dpy)) - xsh.width) / 2;
xsh.y= (DisplayHeight(dpy, DefaultScreen(dpy)) - xsh.height) / 2;
twin= XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, black, white);
XSetStandardProperties(dpy, twin, "patchmix", "textsw", None, argv, argc, &xsh);
XSetWMHints(dpy, twin, &xwmh);
/***************************************************************************/
(void) strcpy(font, FONT);
(void) strcpy(small_font, SMALL_FONT);
}
void map_windows()
{
XMapWindow(dpy, wwin);
XMapWindow(dpy, pwin);
XMapWindow(dpy, cwin);
XMapWindow(dpy, mwin);
}
void setup_canvas()
{
XGCValues gcv;
int ss = SBITMAP_SIZE;
if ((canvas = canvas_create(progname, dpy, cwin,
LXC_WIDTH, CANVAS_WIDTH,
LXC_HEIGHT, CANVAS_HEIGHT,
LXC_NULL)) == (Canvas *) NULL)
exit(-1);
canvas_win= *((Window *) canvas_get(canvas, LXC_WINDOW));
canvas_pm= *((Pixmap *) canvas_get(canvas, LXC_PIXMAP));
gcv.function = GXxor;
gcv.font = fontstruct->fid;
gcv.foreground = black^white;
gcv.background = white;
gcv.plane_mask = black^white; // was |
canvas_gc = XCreateGC(dpy, canvas_win, (GCFunction | GCFont | GCForeground | GCBackground | GCPlaneMask), &gcv);
XSetPlaneMask(dpy, canvas_gc, black^white);
// previous lines modified for portability
gcv.font = fontstructS->fid;
gcv.plane_mask = black ^ white;
sf_gc = XCreateGC(dpy, canvas_win, (GCFunction | GCFont | GCForeground | GCBackground | GCPlaneMask), &gcv);
gcv.function = GXset;
gcv.plane_mask = black ^ white;
clear_gc = XCreateGC(dpy, canvas_win, (GCFunction | GCFont | GCForeground | GCBackground | GCPlaneMask), &gcv);
XSelectInput(dpy, canvas_win, ExposureMask | ButtonPressMask | ButtonMotionMask);
/* plot images on canvas */
XPutImage(dpy, canvas_pm, canvas_gc, add_im, 0, 0, 0, 10,
ss, ss);
XPutImage(dpy, canvas_pm, canvas_gc, subtract_im, 0, 0, 0, 70,
ss, ss);
XPutImage(dpy, canvas_pm, canvas_gc, multiply_im, 0, 0, 0, 130,
ss, ss);
XPutImage(dpy, canvas_pm, canvas_gc, divide_im, 0, 0, 0, 190,
ss, ss);
XPutImage(dpy, canvas_pm, canvas_gc, out_im, 0, 0, 0, 250,
ss, ss);
}
void setup_panel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((panel= panel_create(progname, dpy, pwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((title= panelitem_create(panel, LXPI_LABEL,
LXPI_X, PFRAME_WIDTH*2/3,
LXPI_Y, 10,
LXPI_STRING, "PATCHMIX",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((pi_name= panelitem_create(panel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 20,
LXPI_STRING, "Name:",
LXPTEXT_MAXSTORE, 50,
LXPTEXT_MAXDISPLAY, 20,
LXPTEXT_VALUE, "inst1",
LXPTEXT_PROC, pi_name_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((pi_srate= panelitem_create(panel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Sampling Rate:",
LXPTEXT_MAXSTORE, 20,
LXPTEXT_MAXDISPLAY, 20,
LXPTEXT_VALUE, "22050",
LXPTEXT_PROC, pi_srate_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
/* display this only when input file exists */
if ((pi_inchans= panelitem_create(panel, LXPI_CYCLE,
LXPI_X, 10,
LXPI_Y, 80,
LXPI_STRING, "Input Channels:",
LXPENUM_SELSTRINGS, "From Input File", "Mono", "Stereo", (char *) NULL,
LXPENUM_VALUE, "1",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((pi_outchans= panelitem_create(panel, LXPI_CYCLE,
LXPI_X, 10,
LXPI_Y, 110,
LXPI_STRING, "Output Channels:",
LXPENUM_SELSTRINGS, "Mono", "Stereo", (char *) NULL,
LXPENUM_VALUE, "0",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((compile_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH/2,
LXPI_Y, 20,
LXPI_STRING, "Compile",
LXPI_PROC, compile,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((set_data_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH/2,
LXPI_Y, 60,
LXPI_STRING, "Set Data",
LXPI_PROC, set_data,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((run_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH/2,
LXPI_Y, 100,
LXPI_STRING, "Run",
LXPI_PROC, run,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((rescale_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH*2/3,
LXPI_Y, 50,
LXPI_STRING, "Rescale",
LXPI_PROC, rescale,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((play_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH*2/3,
LXPI_Y, 100,
LXPI_STRING, "Play",
LXPI_PROC, play,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((reset_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH*5/6,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_choice,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quit_button= panelitem_create(panel, LXPI_BUTTON,
LXPI_X, PFRAME_WIDTH*5/6,
LXPI_Y, 100,
LXPI_STRING, "Exit",
LXPI_PROC, quit,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_qpanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((qpanel= panel_create(progname, dpy, qwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((qmsg= panelitem_create(qpanel, LXPI_LABEL,
LXPI_X, 10,
LXPI_Y, 20,
LXPI_STRING, "\"Confirm exit?\"",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((no_button= panelitem_create(qpanel, LXPI_BUTTON,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Cancel",
LXPI_PROC, no,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((ok_button= panelitem_create(qpanel, LXPI_BUTTON,
LXPI_X, QFRAME_WIDTH/2,
LXPI_Y, 50,
LXPI_STRING, "Quit",
LXPI_PROC, ok,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_oscpanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((oscpanel= panel_create(progname, dpy, oscwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((osctitle= panelitem_create(oscpanel, LXPI_LABEL,
LXPI_X, 20,
LXPI_Y, 10,
LXPI_STRING, "OSCIL PARAMS:",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((oscamp= panelitem_create(oscpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Amplitude:",
LXPTEXT_MAXSTORE, 15,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, temp_ugen.oscil->amp->value,
LXPTEXT_IPOS, strlen(temp_ugen.oscil->amp->value),
LXPTEXT_PROC, oscamp_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((oscfreq= panelitem_create(oscpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 80,
LXPI_STRING, "Frequency:",
LXPTEXT_MAXSTORE, 10,
LXPTEXT_MAXDISPLAY, 6,
LXPTEXT_VALUE, temp_ugen.oscil->freq->value,
LXPTEXT_IPOS, strlen(temp_ugen.oscil->freq->value),
LXPTEXT_PROC, oscfreq_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((oscphs= panelitem_create(oscpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 110,
LXPI_STRING, "Phase:",
LXPTEXT_MAXSTORE, 5,
LXPTEXT_MAXDISPLAY, 3,
LXPTEXT_VALUE, temp_ugen.oscil->phs->value,
LXPTEXT_IPOS, strlen(temp_ugen.oscil->phs->value),
LXPTEXT_PROC, oscphs_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((resetosc_button= panelitem_create(oscpanel, LXPI_BUTTON,
LXPI_X, OFRAME_WIDTH*2/3,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_oscil,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quitosc_button= panelitem_create(oscpanel, LXPI_BUTTON,
LXPI_X, OFRAME_WIDTH*2/3,
LXPI_Y, 95,
LXPI_STRING, "Exit",
LXPI_PROC, quit_oscil,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_evppanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((evppanel= panel_create(progname, dpy, evpwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((evptitle= panelitem_create(evppanel, LXPI_LABEL,
LXPI_X, 20,
LXPI_Y, 10,
LXPI_STRING, "EVP PARAMS:",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((evpamp= panelitem_create(evppanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Amplitude:",
LXPTEXT_MAXSTORE, 15,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, temp_ugen.evp->amp->value,
LXPTEXT_IPOS, strlen(temp_ugen.evp->amp->value),
LXPTEXT_PROC, evpamp_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((evprise= panelitem_create(evppanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 80,
LXPI_STRING, "Rise Time:",
LXPTEXT_MAXSTORE, 4,
LXPTEXT_MAXDISPLAY, 4,
LXPTEXT_VALUE, temp_ugen.evp->rise->value,
LXPTEXT_IPOS, strlen(temp_ugen.evp->rise->value),
LXPTEXT_PROC, evprise_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((evpdecay= panelitem_create(evppanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 110,
LXPI_STRING, "Decay Time:",
LXPTEXT_MAXSTORE, 4,
LXPTEXT_MAXDISPLAY, 4,
LXPTEXT_VALUE, temp_ugen.evp->decay->value,
LXPTEXT_IPOS, strlen(temp_ugen.evp->decay->value),
LXPTEXT_PROC, evpdecay_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((evpfunc= panelitem_create(evppanel, LXPI_CYCLE,
LXPI_X, 10,
LXPI_Y, 140,
LXPI_STRING, "Rise/Decay Function:",
LXPENUM_SELSTRINGS, "Linear", "Exponential", (char *) NULL,
LXPENUM_VALUE, "0",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((resetevp_button= panelitem_create(evppanel, LXPI_BUTTON,
LXPI_X, EFRAME_WIDTH/2,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_evp,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quitevp_button= panelitem_create(evppanel, LXPI_BUTTON,
LXPI_X, EFRAME_WIDTH/2,
LXPI_Y, 95,
LXPI_STRING, "Exit",
LXPI_PROC, quit_evp,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_buzzpanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((buzzpanel= panel_create(progname, dpy, buzzwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((buzztitle= panelitem_create(buzzpanel, LXPI_LABEL,
LXPI_X, 20,
LXPI_Y, 10,
LXPI_STRING, "BUZZ PARAMS:",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((buzzamp= panelitem_create(buzzpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Amplitude:",
LXPTEXT_MAXSTORE, 15,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, temp_ugen.buzz->amp->value,
LXPTEXT_IPOS, strlen(temp_ugen.buzz->amp->value),
LXPTEXT_PROC, buzzamp_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((buzzfreq= panelitem_create(buzzpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 80,
LXPI_STRING, "Frequency:",
LXPTEXT_MAXSTORE, 10,
LXPTEXT_MAXDISPLAY, 6,
LXPTEXT_VALUE, temp_ugen.buzz->freq->value,
LXPTEXT_IPOS, strlen(temp_ugen.buzz->freq->value),
LXPTEXT_PROC, buzzfreq_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((buzznhar= panelitem_create(buzzpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 110,
LXPI_STRING, "No. Harmonics:",
LXPTEXT_MAXSTORE, 5,
LXPTEXT_MAXDISPLAY, 3,
LXPTEXT_VALUE, temp_ugen.buzz->nhar->value,
LXPTEXT_IPOS, strlen(temp_ugen.buzz->nhar->value),
LXPTEXT_PROC, buzznhar_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((resetbuzz_button= panelitem_create(buzzpanel, LXPI_BUTTON,
LXPI_X, OFRAME_WIDTH*2/3,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_buzz,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quitbuzz_button= panelitem_create(buzzpanel, LXPI_BUTTON,
LXPI_X, OFRAME_WIDTH*2/3,
LXPI_Y, 95,
LXPI_STRING, "Exit",
LXPI_PROC, quit_buzz,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_sidepanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((sidepanel= panel_create(progname, dpy, sidewin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((sidetitle= panelitem_create(sidepanel, LXPI_LABEL,
LXPI_X, 20,
LXPI_Y, 10,
LXPI_STRING, "INPUT PARAMS:",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((sidein0= panelitem_create(sidepanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Input Amplitude 1:",
LXPTEXT_MAXSTORE, 20,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, temp_ugen.side->in0->value,
LXPTEXT_IPOS, strlen(temp_ugen.side->in1->value),
LXPTEXT_PROC, sidein0_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((sidein1= panelitem_create(sidepanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 100,
LXPI_STRING, "Input Ampitude 2:",
LXPTEXT_MAXSTORE, 20,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, temp_ugen.side->in1->value,
LXPTEXT_IPOS, strlen(temp_ugen.side->in1->value),
LXPTEXT_PROC, sidein1_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((sidetoggle= panelitem_create(sidepanel, LXPI_TOGGLE,
LXPI_X, 200,
LXPI_Y, 20,
LXPI_STRING, "Data P-Field?:",
LXPENUM_SELSTRINGS, "Yes", "Yes", 0,
LXPENUM_SELXS, 130, LXPENUM_LOCTERM,
LXPENUM_SELYS, 30, 80, LXPENUM_LOCTERM,
LXPENUM_MARKXS, 110, LXPENUM_LOCTERM,
LXPENUM_MARKYS, 30, 80, LXPENUM_LOCTERM,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((resetside_button= panelitem_create(sidepanel, LXPI_BUTTON,
LXPI_X, 500,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_side,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quitside_button= panelitem_create(sidepanel, LXPI_BUTTON,
LXPI_X, 500,
LXPI_Y, 150,
LXPI_STRING, "Exit",
LXPI_PROC, quit_side,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_datpanel()
{
Panel *panel_create();
Panel_item *panelitem_create();
if ((datpanel= panel_create(progname, dpy, datwin,
LXP_FONT, font,
LXP_NULL)) == (Panel *) NULL)
exit(-1);
if ((dattitle= panelitem_create(datpanel, LXPI_LABEL,
LXPI_X, 20,
LXPI_Y, 10,
LXPI_STRING, "INSTRUMENT DATA:",
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((datout= panelitem_create(datpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 50,
LXPI_STRING, "Outskip:",
LXPTEXT_MAXSTORE, 15,
LXPTEXT_MAXDISPLAY, 10,
LXPTEXT_VALUE, data.outskip,
LXPTEXT_PROC, datout_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((datdur= panelitem_create(datpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 80,
LXPI_STRING, "Duration:",
LXPTEXT_MAXSTORE, 10,
LXPTEXT_MAXDISPLAY, 6,
LXPTEXT_VALUE, data.dur,
LXPTEXT_PROC, datdur_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((datamp= panelitem_create(datpanel, LXPI_TEXT,
LXPI_X, 10,
LXPI_Y, 110,
LXPI_STRING, "Amplitude:",
LXPTEXT_MAXSTORE, 5,
LXPTEXT_MAXDISPLAY, 3,
LXPTEXT_VALUE, data.amp,
LXPTEXT_PROC, datamp_proc,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((resetdat_button= panelitem_create(datpanel, LXPI_BUTTON,
LXPI_X, DFRAME_WIDTH*2/3,
LXPI_Y, 50,
LXPI_STRING, "Reset",
LXPI_PROC, reset_dat,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
if ((quitdat_button= panelitem_create(datpanel, LXPI_BUTTON,
LXPI_X, DFRAME_WIDTH*2/3,
LXPI_Y, 95,
LXPI_STRING, "Quit/Save",
LXPI_PROC, quit_dat,
LXPI_NULL)) == (Panel_item *) NULL)
exit(-1);
}
void setup_images()
{
Visual *v;
int d;
XImage *image_create();
v = XDefaultVisualOfScreen(XDefaultScreenOfDisplay(dpy));
d = XDefaultDepthOfScreen(XDefaultScreenOfDisplay(dpy));
if((oscil_im = image_create(dpy, black, white, oscil_bits, oscil_width, oscil_height, d)) == (XImage *) NULL)
exit(-1);
if((evp_im = image_create(dpy, black, white, evp_bits, evp_width, evp_height, d)) == (XImage *) NULL)
exit(-1);
if((buzz_im = image_create(dpy, black, white, buzz_bits, buzz_width, buzz_height, d)) == (XImage *) NULL)
exit(-1);
if((rect_im = image_create(dpy, black, white, rect_bits, rect_width, rect_height, d)) == (XImage *) NULL)
exit(-1);
if((dot_im = image_create(dpy, black, white, dot_bits, dot_width, dot_height, d)) == (XImage *) NULL)
exit(-1);
if((add_im = image_create(dpy, black, white, add_bits, add_width, add_height, d)) == (XImage *) NULL)
exit(-1);
if((subtract_im = image_create(dpy, black, white, subtract_bits, subtract_width, subtract_height, d)) == (XImage *) NULL)
exit(-1);
if((multiply_im = image_create(dpy, black, white, multiply_bits, multiply_width, multiply_height, d)) == (XImage *) NULL)
exit(-1);
if((divide_im = image_create(dpy, black, white, divide_bits, divide_width, divide_height, d)) == (XImage *) NULL)
exit(-1);
if((out_im = image_create(dpy, black, white, out_bits, out_width, out_height, d)) == (XImage *) NULL)
exit(-1);
}
void setup_mbar()
{
unsigned long g_mask;
long e_mask;
XGCValues gcv;
if ((menu_bar = canvas_create(progname, dpy, mwin,
LXC_WIDTH, MFRAME_WIDTH,
LXC_HEIGHT, MFRAME_HEIGHT,
LXC_NULL)) == (Canvas *) NULL)
exit(-1);
mbar_win = *((Window *) canvas_get(menu_bar, LXC_WINDOW));
mbar_pm = *((Pixmap *) canvas_get(menu_bar, LXC_PIXMAP));
/* Choose events menu bar uses */
e_mask = ExposureMask | ButtonPressMask | ButtonReleaseMask;
XSelectInput(dpy, mbar_win, e_mask);
/* GC for menu bar */
g_mask = GCFunction | GCFont | GCForeground | GCBackground;
gcv.function = GXcopy;
gcv.font = fontstruct->fid;
gcv.foreground = black;
gcv.background = white;
mbar_gc = XCreateGC(dpy, mbar_win, g_mask, &gcv);
draw_menubar();
setup_menus();
}